package com.template.method.demo02;

public abstract class HummerModel {
    public abstract void start();
    public abstract void alarm();
    public abstract void engineBoom();
    public abstract void stop();

    /**
     * 模板方法
     *
     * 定义一个操作中的算法的框架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.
     * 模板方法实现对基本方法的调度,完成固定的逻辑.一般模板方法为了防止恶意的操作,不允许被重写.
     */
    public final void run(){
        this.start();
        this.alarm();
        this.engineBoom();
        this.stop();
    }
}
